package org.cis.jproyinv.proyecto.negocio;

import java.util.ArrayList;
import java.util.List;
import org.cis.jproyinv.proyecto.dao.LineaInvestigacionDao;
import org.cis.jproyinv.proyecto.dao.ProyectoInvestigacionDao;
import org.cis.jproyinv.proyecto.modelo.Autor;
import org.cis.jproyinv.proyecto.modelo.Cronograma;
import org.cis.jproyinv.proyecto.modelo.DirectorProyecto;
import org.cis.jproyinv.proyecto.modelo.LineaInvestigacion;
import org.cis.jproyinv.proyecto.modelo.Objetivo;
import org.cis.jproyinv.proyecto.modelo.ProyectoInvestigacion;
import org.cis.jproyinv.proyecto.modelo.Renuncia;

public class AdministrarProyectoInvestigacionUCController {

    private ProyectoInvestigacionDao proyectoDao = new ProyectoInvestigacionDao();
    private ProyectoInvestigacion proyecto = new ProyectoInvestigacion();
    private List<Objetivo> objetivos = new ArrayList();
    private List<DirectorProyecto> directores = new ArrayList();
    private List<Autor> autores = new ArrayList();
    private LineaInvestigacion linea;
    private Cronograma cronograma;
    private DirectorProyecto director;
    private Autor autor;
    private Objetivo obj;
    private Renuncia renuncia = new Renuncia();
    private String dni;

    public boolean guardar(ProyectoInvestigacion pro) {
        boolean guardar = false;
        try {
            proyectoDao.guardar(pro);
            guardar = true;
        } catch (NullPointerException e) {
            proyectoDao.guardar(pro);
            guardar = true;
        } catch (IllegalArgumentException e) {
            proyectoDao.guardar(pro);
            guardar = true;
        }
        return guardar;
    }

    public boolean actualizar(ProyectoInvestigacion proyecto) {
        boolean actualizar = true;
        proyectoDao.actualizar(proyecto);
        return actualizar;
    }

    public ProyectoInvestigacion buscarTema(String tema) {
        return new ProyectoInvestigacionDao().buscarXTema(tema);
    }

    public boolean existe(ProyectoInvestigacion pro) {
        boolean existe = false;
        for (ProyectoInvestigacion pro1 : this.proyectoDao.buscarTodos()) {
            if (pro1.getId().equals(pro.getId())) {
                existe = true;
            }
        }
        return existe;
    }

    public List<ProyectoInvestigacion> cumplidos() {
        return proyectoDao.proyectosCumplidos();
    }

    public LineaInvestigacion buscarLinea(String selectedItem) {
        return new LineaInvestigacionDao().buscarCriterio(selectedItem).get(0);
    }

    public List<ProyectoInvestigacion> buscar(String criterio) {
        return proyectoDao.buscarCriterio(criterio);
    }

    public ProyectoInvestigacion buscarId(Long id) {
        return proyectoDao.buscar(id);
    }

    public ProyectoInvestigacion editar(Long id) {
        return proyectoDao.buscar(id);
    }

    public Objetivo buscarObjetivo(String descripcion) {
        Objetivo obj = new Objetivo();
        for (Objetivo objetivo : objetivos) {
            if (objetivo.getDescripcion().equals(descripcion)) {
                obj = objetivo;
            }
        }
        return obj;
    }

    public DirectorProyecto getDirector() {
        return director;
    }

    public void setDirector(DirectorProyecto director) {
        this.director = director;
    }

    public LineaInvestigacion getLinea() {
        return linea;
    }

    public void setLinea(LineaInvestigacion linea) {
        this.linea = linea;
    }

    public List<Objetivo> getObjetivos() {
        return objetivos;
    }

    public void setObjetivos(List<Objetivo> objetivo) {
        this.objetivos = objetivo;
    }

    public ProyectoInvestigacionDao getProyectoDao() {
        return proyectoDao;
    }

    public void setProyectoDao(ProyectoInvestigacionDao proyectoDao) {
        this.proyectoDao = proyectoDao;
    }

    public List<Autor> getAutores() {
        return autores;
    }

    public void setAutores(List<Autor> autores) {
        this.autores = autores;
    }

    public Cronograma getCronograma() {
        return cronograma;
    }

    public void setCronograma(Cronograma cronograma) {
        this.cronograma = cronograma;
    }

    public List<DirectorProyecto> getDirectores() {
        return directores;
    }

    public void setDirectores(List<DirectorProyecto> directores) {
        this.directores = directores;
    }

    public ProyectoInvestigacion getProyecto() {
        return proyecto;
    }

    public void setProyecto(ProyectoInvestigacion proyecto) {
        this.proyecto = proyecto;
    }

    public Objetivo getObj() {
        return obj;
    }

    public void setObj(Objetivo obj) {
        this.obj = obj;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public Autor getAutor() {
        return autor;
    }

    public void setAutor(Autor autor) {
        this.autor = autor;
    }

    public Renuncia getRenuncia() {
        return renuncia;
    }

    public void setRenuncia(Renuncia renuncia) {
        this.renuncia = renuncia;
    }

    public ProyectoInvestigacion crear() {
        proyecto = new ProyectoInvestigacion();
        return proyecto;
    }
}
